#include <stdio.h>
#include <unistd.h>
#include <pthread.h>

void *start_routine(void *args)
{
    // 当线程创建出来的时候，就把当前线程分离出来
    // pthread_detach(pthread_self()); // 设置自己为分离状态,以后主线程就不会等待了
    int cnt = 5;
    while (cnt--)
    {
        printf("%s running ... : 0x%x\n", (void *)args, pthread_self());
        sleep(1);
    }
    return NULL;
}

typedef struct ThreadData
{
    char *threadname;
    pthread_t *mutex_P_;
};

int main()
{

    pthread_t tid;
    // 创建线程
    pthread_create(&tid, NULL, start_routine, (void *)"thread 1");
    pthread_detach(tid); // 一般吧在这里设置进程分离，但是因为这里比较特殊，不然主线程还是会等待

    printf("main thread running ... : 0x%x\n", pthread_self());
    // sleep(3); // 这里睡2秒的原因： 因为创建了一个新线程，新线程和主线程不确定哪一个线程先跑，所以让主线程睡2秒，让新线程跑起来
    // 等待线程
    // 一个线程默认是joinable的，如果设置了分离状态，不能够进行等待了！！
    // int n = pthread_join(tid, NULL);
    // printf("result: %d\n", n);

    while (1)
    {
        printf("main thread running ... : 0x%x\n", pthread_self());
        sleep(1);
    }
}